#字典练习员工资料修改与查询
import sys					#导入sys库用于读写文件
f_name = 'tel.txt'
f = file(f_name)			#将文件名赋值给f

staff_info = {}				#设置一个空字典
column_name = ['id', 'name', 'dep','phone']	#让column_name列等于文件信息的列名
print  column_name			#打印列名

#遍历读取tel.txt中的数据
for line in f.readlines():	#读取每一行
	f_line = line.split()	#分列
	key = f_line[0]			#读取首位的键值
	info = f_line[1:]		#将第二位之后的数据放到info变量中
	staff_info[key] = info	#将员工信息写staff_info中

f.close()					#将文件关闭

while True:					#文件正常关闭后运行下面
	print '''Please choose below option to proceed:
	1.modify
	2.search
	'''
	try:
		option = int(raw_input('--->'))	#读取输入的选项1，2
	except ValueError:
		print '\033[31;1monly integer can be accepted!\033[0m' #用红色显示 
		continue
	if option == 1:		#如果选的是1
		option = raw_input('[e.g: update name deng to deng1 for id 1 ]:').strip() #将写入的语法命令去掉首尾空白
		f_option = option.split()	#将语法命令分列
		print f_option				#打印出分列的列表
		
		#更新数据print f_option[0],f_option[3],f_option[5],len(f_option)
		if f_option[0] == 'update' and f_option[3] == 'to' and f_option[5] == 'for' and len(f_option) == 8:	#当有update,to,for,语法长度为8时开始更改数据
			for column in column_name:		#遍历每一个列名
				key = f_option[-1]			#令key等于语法的id号
				if staff_info.has_key(key):	#判断id号是否存在
					value_index = column_name.index(f_option[1])-1		#得出输入命令为信息表的列的相应位置			
					print 'old one:',staff_info[key]					#打印出更改之前的数据
					staff_info[key][value_index] = f_option[4]			#将语法中更改的数据写入对应位置
					print 'new one:', staff_info[key]					#打印更改后的数据
					break
					
		else:print '\n syntax error!'
	elif option == 2:	#应的查找数据
		option = raw_input('want search whose info,what's ID').strip()
		for k, v in staff_info.item() :
			if k == option:
				print staff_info[k],v
				break
				
	elif option == 3:		#将更改的数据写入到文件中
		f = file('tel.txt','w')
		for k,v in staff_info.items():
			line = '%s %s \n' %(k,' '.join(v))		#将列表数据转成数据串写入文件中，不转成字符串就不能写入
			print line,
			f.write(line)
			f.flush()
		f.close()
		
		sys.exit()